/*
 * @lc app=leetcode.cn id=73 lang=cpp
 *
 * [73] 矩阵置零
 */

// @lc code=start
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    void setZeroes(vector<vector<int>> &matrix)
    {
        const int m = matrix.size();
        const int n = matrix[0].size();
        set<int> rows, columns;
        for(int i = 0; i < m; i++)
        {
            for(int j = 0; j < n; j++)
            {
                if(!matrix[i][j])
                {
                    rows.insert(i);
                    columns.insert(j);
                }
            }
        }
        for(int i = 0; i < m; i++)
        {
            for(int j = 0; j < n; j++)
            {
                if(rows.find(i) != rows.end() && columns.find(j) != columns.end())
                {
                    // rows.erase(i);
                    // columns.erase(j);
                    for(int l = 0; l < n; l++)
                    {
                        matrix[i][l] = 0;
                    }
                    for(int r = 0; r < m; r++)
                    {
                        matrix[r][j] = 0;
                    }
                }
            }
        }
    }
};
// @lc code=end
